class Utils {
  //消息反馈
  static toast(title="数据加载失败..."){
  return  new Promise((resolve)=>{
      wx.showToast({
        title,
        mask:true,
        icon:'none',
        duration:1500
      })
    const timer = setTimeout(() => {
        resolve("success")
        clearTimeout(timer)
      }, 1500);
    })
  }
  static timeFormat(timestamp:number):string{
    const date = new Date(timestamp);
    const year = date.getFullYear();
    const month = (date.getMonth() + 1).toString().padStart(2, '0'); // 月份从0开始，因此需要加1
    const day = date.getDate().toString().padStart(2, '0');
    return `${year}-${month}-${day}`;
  }
  // 计算日期范围内的所有日期
  static getDatesBetween(startDateStr: string, endDateStr: string): string[] {
    const startDate = new Date(startDateStr);
    const endDate = new Date(endDateStr);
    const dateArray: string[] = [];
    // 迭代日期
    while (startDate <= endDate) {
        // 将日期转换为字符串并加入数组
        dateArray.push(startDate.toISOString().split('T')[0]);

        // 日期增加一天
        startDate.setDate(startDate.getDate() + 1);
    }
    return dateArray;
}
// 计算近一周一年一月的开始结束时间
static  getStartAndEndDates(period: 'week' | 'month' | 'threeMonth' | 'year'): { startDate: string; endDate: string } {
  const now = new Date(); // 当前时间
  let start: Date;
  let end: Date = new Date(now); // 结束时间是当前时间

  switch (period) {
      case 'week':
          // 计算一周的开始时间
          start = new Date(now);
          const dayOfWeek = now.getDay(); // 获取当前是周几
          const diffToMonday = (dayOfWeek === 0 ? 7 : dayOfWeek) - 1; // 计算与周一的差距
          start.setDate(now.getDate() - diffToMonday); // 设置到本周一
          start.setHours(0, 0, 0, 0); // 设置时间为00:00:00
          break;

      case 'month':
          // 计算一个月的开始时间
          start = new Date(now.getFullYear(), now.getMonth(), 1); // 设置到本月第一天
          start.setHours(0, 0, 0, 0); // 设置时间为00:00:00
          break;
      case 'threeMonth':
          // 计算一个月的开始时间
          start = new Date(now.getFullYear(), now.getMonth() - 3,1); // 设置到本月第一天
          start.setHours(0, 0, 0, 0); // 设置时间为00:00:00
        break;
      case 'year':
          // 计算一年的开始时间
          start = new Date(now.getFullYear(), 0, 1); // 设置到今年第一天
          start.setHours(0, 0, 0, 0); // 设置时间为00:00:00
          break;

      default:
          throw new Error('Invalid period');
  }
  let startDate = this.timeFormat(start.getTime())
  let endDate = this.timeFormat(end.getTime())
  return { startDate, endDate };
}
//微信支付
static requestPayment(timeStamp:string, nonceStr:string, pkg:string, signType:string, paySign:string) {
return new Promise((resolve,reject)=>{
  wx.requestPayment({
    timeStamp: timeStamp,   // 时间戳，后台生成
    nonceStr: nonceStr,     // 随机字符串，后台生成
    package: pkg,           // 支付包信息，格式为 `prepay_id=xxxx`
    signType: signType,     // 签名方式，通常为 'MD5'
    paySign: paySign,       // 支付签名，后台生成
    success(res) {
      resolve('success')
      // 可以在这里处理支付成功后的业务逻辑，如跳转页面
    },
    fail(res) {
      if (res.errMsg === "requestPayment:fail cancel") {
        wx.showToast({
          title: '支付已取消',
          icon: 'none'
        });
        reject("cacel")
      } else {
        wx.showToast({
          title: '支付失败',
          icon: 'none'
        });
        reject("fail")
      }
      // 在这里处理支付失败的逻辑
    }
  });
})

}

}
wx.Utils = Utils
export default Utils